package com.zpark.oop.day01;

/**
 * 对象的创建：
 *      类定义完成之后，可以使用new关键字创建对象，创建对象的过程通常称为实例化对象
 *      语法：
 *          类名 引用(变量名) = new 类名([参数....]);
 *      使用对象访问类的变量和方法：
 *          访问变量：对象名（引用）.变量名
 *          访问方法：对象名（引用）.方法名([参数....])
 */
public class Demo02 {
    public static void main(String[] args) {
        // 创建Person类对象
        Person zs = new Person();
        // 创建dc对象
        Person dc = new Person();
        // 访问zs对象的属性
        System.out.println(zs.name);
        System.out.println(zs.age);
        System.out.println(zs.height);
        System.out.println(zs.gender);
        System.out.println(zs.color);
        System.out.println(zs.weight);
        System.out.println(zs.ch);
        System.out.println(zs.flag);
        System.out.println(zs.f);
        System.out.println(zs.lg);
        System.out.println(zs.arr);

        /**
         * 对象的属性默认值为：
         *      byte\short\int\long：0
         *      float\double：0.0
         *      char：\u0000
         *      boolean：false
         *      引用数据类型：null
         */

        // 给对象的属性赋值 对象名（引用）.变量名 = 值；
        zs.name = "张三";
        zs.age = 18;
        zs.height = 1.88;
        zs.gender = "男";
        zs.color = "黄色";
        zs.weight = 80;
        zs.ch = 'A';
        zs.flag = true;
        zs.f = 3.14f;
        zs.lg = 1000000000000000000L;
        zs.arr = new int[]{1,2,3,4,5};

        // 访问zs对象的属性
        System.out.println(zs.name);
        System.out.println(zs.age);
        System.out.println(zs.height);
        System.out.println(zs.gender);
        System.out.println(zs.color);
        System.out.println(zs.weight);
        System.out.println(zs.ch);
        System.out.println(zs.flag);
        System.out.println(zs.f);
        System.out.println(zs.lg);
        System.out.println(zs.arr);

        System.out.println("***********************************");

        System.out.println(zs.name); // 张三
        System.out.println(dc.name); // null


        System.out.println("----------------------");

        /**
         * 如果属性或者方法被static修饰，则在访问（使用）的时候直接使用
         *      类名.方法名  类名.变量名  这种方法推荐使用，不推荐使用对象名访问
         * 如果属性或者方法没有被static修饰，则在访问的时候需要使用
         *      对象名.方法名     对象名.变量名
         */

        // 访问方法：对象名（引用）.方法名([参数....])
        zs.eat();
        Person.eat();
        zs.run();
//        Person.run();
    }
}
